package com.xw.controller.callbackcontroller;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xw.common.Const;
import com.xw.util.IosVerifyUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("/appleCallBack")
public class AppleCallBackController {


    @RequestMapping(value = "/buyAnswer",method = RequestMethod.POST)
    @ResponseBody
    public Map<String, Object>  doIosRequest(String transactionID,String payload,String id) throws Exception {
        Map<String, Object> map = new HashMap<String, Object>();
        System.out.println("客户端传过来的值1："+transactionID+"客户端传过来的值2："+payload);
        //todo 上线要改成正式环境 1 注意
        String verifyResult =  IosVerifyUtil.buyAppVerify(payload,1); 	//0.沙箱 1.先线上测试    发送平台验证
        if (verifyResult == null) {   											// 苹果服务器没有返回验证结果
            System.out.println("无订单信息!");
        } else {  	    														// 苹果验证有返回结果
            System.out.println("线上，苹果平台返回JSON:"+verifyResult);
            JSONObject job = JSONObject.parseObject(verifyResult);
            String states = job.getString("status");

            System.out.println("苹果平台返回值：job"+job);
            if (states.equals("0")){ // 前端所提供的收据是有效的    验证成功
                String r_receipt = job.getString("receipt");
                JSONObject returnJson = JSONObject.parseObject(r_receipt);
                String in_app = returnJson.getString("in_app");
                //in_app 有可能返回json数据 ，获取最后一个数据进行验证
                JSONArray objects = JSONObject.parseArray(in_app);
                Object o = objects.get(objects.size()-1);
                JSONObject in_appJson = JSONObject.parseObject(o.toString());

                String transaction_id = in_appJson.getString("transaction_id");   // 订单号
    /************************************************+自己的业务逻辑**********************************************************/

                //如果单号一致  则修改购买信息
                if(transactionID.equals(transaction_id)){


                }

                map.put("code", Const.SUCCESS_CODE);
                map.put("msg", "验证成功");
/************************************************+自己的业务逻辑end**********************************************************/
            } else {
                map.put("code", Const.ERROR_CODE);
                map.put("msg", "receipt数据有问题");
            }
        }
        return map;
    }


}
